package com.bsoft.gol.hcs.specialist.service;

import com.bsoft.gol.hcs.specialist.bean.qo.*;
import com.bsoft.gol.hcs.specialist.bean.vo.*;
import ctd.controller.exception.ControllerException;
import hcn.specialist.BaseComplaint;
import hcn.specialist.BaseComplaintTrace;
import org.atag.dao.model.PageInfo;

import java.util.List;

/**
 * @Author zsf
 * @Date 2023/10/19 0019 9:38
 * @PackageName:com.bsoft.gol.hcs.specialist.service
 * @ClassName: BaseComplaintService
 * @Description: 投诉处理
 * @Version 4.0.02
 */
public interface BaseComplaintService {

    /**
     * @param qo
     * @return void
     * @description: 添加投诉
     * @author: zsf
     * @date: 2023/10/19 0019 10:12
     */
    BaseComplaint addOrUpdate(AddComplaintQo qo);

    /**
    * @description: 医生app更新状态
     * @param qo
     * @return void
    * @author: zsf
    * @date: 2023/10/31 0031 16:15
    */
    void updateAppComplaint(UpdateAppComplaintQo qo);

    /**
     * @param qo
     * @return void
     * @description: 添加投诉
     * @author: zsf
     * @date: 2023/10/19 0019 10:12
     */
    void addOrUpdateNoAuth(AddComplaintQo qo);

    /**
     * @param qo
     * @return void
     * @description: 添加投诉
     * @author: zsf
     * @date: 2023/10/19 0019 10:12
     */
    PageInfo<FindComplaintListNoAuthVo> findComplaintListNoAuth(FindComplaintListNoAuthQo qo);

    /**
     * @param qo
     * @return com.bsoft.gol.hcs.specialist.bean.vo.GetComplaintListNoAuthVo
     * @description: 居民端查询投诉详情
     * @author: zsf
     * @date: 2023/10/23 0023 17:04
     */
    GetComplaintListNoAuthVo getComplaintListNoAuth(GetComplaintListNoAuthQo qo);

    /**
     * @param qo
     * @return com.bsoft.gol.hcs.specialist.bean.vo.GetComplaintDetailVo
     * @description: 查询投诉整改列表详情
     * @author: zsf
     * @date: 2023/10/19 0019 13:42
     */
    GetComplaintDetailVo getComplaintDetail(GetComplaintDetailQo qo);

    /**
     * @param qo
     * @return com.bsoft.gol.hcs.specialist.bean.vo.FindComplaintListVo
     * @description: 查询投诉列表
     * @author: zsf
     * @date: 2023/10/19 0019 16:56
     */
     PageInfo<FindComplaintListVo> findComplaintList(FindComplaintListQo qo) throws ControllerException;

    /**
     * @param qo
     * @return java.util.List<hcn.specialist.BaseComplaintTrace>
     * @description: 查询跟踪记录
     * @author: zsf
     * @date: 2023/10/19 0019 13:24
     */
    List<BaseComplaintTrace> findComplaintTrance(FindComplaintTranceQo qo);

    /**
    * @description: 新增跟踪记录
     * @param qo
     * @return void
    * @author: zsf
    * @date: 2023/10/25 0025 16:28
    */
    void addComplaintTrance(List<BaseComplaintTrace> qos);

    /**
    * @description: 处理列表审核
     * @param qo
     * @return void
    * @author: zsf
    * @date: 2023/10/26 0026 11:13
    */
    void  updateCheckComlaintList(List<UpdateCheckComlaintListQo> qo);

    /**
    * @description: 批量整改审核
     * @param qo
     * @return void
    * @author: zsf
    * @date: 2023/10/26 0026 13:25
    */
    void updateRectComplaintList(List<UpdateRectComplaintListQo> qo);

    /**
    * @description: 评定结果更新
     * @param qo
     * @return void
    * @author: zsf
    * @date: 2023/10/26 0026 13:31
    */
    void updateEvaluateComplaintList(List<UpdateEvaluateComplaintListQo> qo);

    /**
     * 投诉汇总列表
     *
     * @param request
     * @return
     */

    List<ComplaintStatisticsResponse> complaintStatistics(ComplaintStatisticsRequest request);

    /*
        科室汇总列表
     */
    List<ComplaintDeptStatisticsResponse> complaintDeptStatistics(ComplaintStatisticsRequest request);
}
